iT邦幫忙

DAY 13
0

初學 Golang 30 天系列 第 13

初學 Golang 30 天(十三)Select

  • 分享至 

  • xImage
  •  
Channel 有一個類似 Switch 的流程控制「Select」,它只能應用於 Channel 讓我們一起來看看。
<strong>Select</strong>

Go by Example 有一個很有意思的範例,我們一起來看看

package main

import "time"
import "fmt"

func main() {

    c1 := make(chan string)
    c2 := make(chan string)

    go func() {
        time.Sleep(time.Second * 1)
        c1 <- "one"
    }()
    go func() {
        time.Sleep(time.Second * 2)
        c2 <- "two"
    }()

    for i := 0; i < 2; i++ {
        select {
        case msg1 := <-c1:
            fmt.Println("received", msg1)
        case msg2 := <-c2:
            fmt.Println("received", msg2)
        }
    }
}

這邊用 go 建立兩個 goroutine 分別將 one 和 two 傳給 c1, c2,下面主函式的 for 回會將 1, 2 透過 select 流程控制來接收 channel 的訊息再印出。
是不是很簡單,這樣子就可以更有效的控制 channel 了。


上一篇
初學 Golang 30 天(十二)Channel
下一篇
初學 Golang 30 天(十四)錯誤處理
系列文
初學 Golang 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言